// JavaScript Document
$.fn.preloader = function(options){
	
    var defaults = {
        delay:200,
        preload_parent:"a",
        check_timer:300,
        ondone:function(){ },
        oneachload:function(image){  },
        fadein:500 
    };
	
    // variables declaration and precaching images and parent container
    var options = $.extend(defaults, options),
    root = $(this) , images = root.find("img").css({
        "visibility":"hidden",
        opacity:0
    }) ,  timer ,  counter = 0, i=0 , checkFlag = [] , delaySum = options.delay ,
	 
    init = function(){
		
        timer = setInterval(function(){
			
            if(counter>=checkFlag.length)
            {
                clearInterval(timer);
                options.ondone();
                return;
            }
		
            for(i=0;i<images.length;i++)
            {
                if(images[i].complete==true)
                {
                    if(checkFlag[i]==false)
                    {
                        checkFlag[i] = true;
                        options.oneachload(images[i]);
                        counter++;
						
                        delaySum = delaySum + options.delay;
                    }
					
                    $(images[i]).css("visibility","visible").delay(delaySum).animate({
                        opacity:1
                    },options.fadein,
                    function(){
                        $(this).parent().removeClass("preloader");
                    });		 
                }
            }
        },options.check_timer) 	 
    } ;
	
    images.each(function(){	
        if($(this).parent(options.preload_parent).length==0)
            $(this).wrap("<a class='preloader' />");
        else
            $(this).parent().addClass("preloader");
        checkFlag[i++] = false;	
    }); 
    images = $.makeArray(images); 

    var icon = jQuery("<img />",{	
        id : 'loadingicon' ,
        src : 'css/i/89.gif'	
    }).hide().appendTo("body");
	

    timer = setInterval(function(){
        if(icon[0].complete==true)
        {
            clearInterval(timer);
            init();
            icon.remove();
            return;
        }	
    },100);
}